package ru.bytedog.oiot.counter.bot.service.command;

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.telegram.telegrambots.meta.api.objects.Message;
import ru.bytedog.oiot.counter.bot.bean.BotAnswer;
import ru.bytedog.oiot.counter.bot.entity.BotUser;
import ru.bytedog.oiot.counter.bot.service.RegisterUserStep;
import ru.bytedog.oiot.counter.bot.service.UserService;

/**
 * Обработчик команды /clear
 * Очистка идентификатора и токена пользователя сервиса OIOT.RU
 */
@Slf4j
@Service
public class ClearUserDataCommand implements BotCommand {

    protected final UserService service;

    public ClearUserDataCommand(UserService service) {
        this.service = service;
    }

    @Override
    public CommandEnum getCommand() {
        return CommandEnum.CLEAR_USER_DATA;
    }

    @Override
    public BotAnswer commandProcess(Message message) {
        BotUser user = service.getByChatId(message.getChatId());
        if (user == null) {
            log.debug("Пользователь с идентификатором {} не найден", message.getChatId());
            return new BotAnswer("Вы не зарегистрированы", message.getChatId());
        }
        user.setOiotUserId(null);
        user.setOiotUserToken(null);
        user.setStep(RegisterUserStep.EMPTY_TOKEN_AFTER_CLEAR);
        service.update(user);
        log.debug("Пользователь {}({}) удалил учетные данные", user.getUsername(), user.getChatId());
        return new BotAnswer("Ваши учетные данные для сервиса OIOT.RU успешно удалены", message.getChatId());
    }

}
